#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>

using namespace std;
using LL = long long;
/*
The best possible way to distribute the coins is to create packets with coins 1,2,4,…2^k with maximum possible k such that 2⋅2k−1≤n. 
Using them, we can make all possible numbers which can be written using first k+1 bits in binary representation. 
For representing the remaining numbers, we must include n−2⋅2k+1 remaining coins in one packets.


just like 1-2 can  represent 1-3
          1 2 4 can represent 1-7
          1 2 4 8 can represent 1-15


if n = (1000011000110)2
we can split it into (1)2, (10)2, (100)2....(100000000000)2, and the remainder
*/


int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    LL n;
    cin >> n;
    LL temp = n;
    int dit = 0;
    while(n){
        n >>= 1;
        dit ++;
    }



    cout << dit << '\n';



    return 0;
}